Change SSE response structure so that it's compatible with GraphQL SSE standard #292
+8
−9
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
The current payload of a subscription response in the SSE protocol looks like this.
It is simply encoded JSON with a new line.
The proposed response format is as follows:
The encoded response additionally contains an event segment
event: next
and the data is prefixed with adata:
field, indicating data segment. This structure is consistent with GraphQL over Server-Sent Events Protocol specification and official SSE standard.Reason
Many graphql clients expect a response consistent with the above standard. An example of this is graphql-mesh, which expects responses from subgraph services sent in a structured manner. Or even the highly popular client graphql-sse used in browsers also requires this format.
This is a breaking change and should be implemented with backward compatibility. Perhaps introducing an additional configuration option or an option to override the response format would be appropriate in this case, perhaps even more appropriate.